package com.jeepig.evaluation.service.impl;

import java.util.List;
import java.util.stream.Collectors;

import com.jeepig.common.utils.DateUtils;
import com.jeepig.common.utils.SecurityUtils;
import com.jeepig.evaluation.domain.Evaluate;
import com.jeepig.evaluation.domain.EvaluateItem;
import com.jeepig.evaluation.domain.Member;
import com.jeepig.evaluation.mapper.EvaluateItemMapper;
import com.jeepig.evaluation.mapper.EvaluateMapper;
import com.jeepig.evaluation.mapper.MemberMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.jeepig.evaluation.mapper.MenberEvaluationMapper;
import com.jeepig.evaluation.domain.MenberEvaluation;
import com.jeepig.evaluation.service.IMenberEvaluationService;

/**
 * 人员评价Service业务层处理
 *
 * @author guoxb
 * @date 2025-11-01
 */
@Service
public class MenberEvaluationServiceImpl implements IMenberEvaluationService
{
    @Autowired
    private MenberEvaluationMapper menberEvaluationMapper;

    @Autowired
    private MemberMapper memberMapper;

    @Autowired
    private EvaluateMapper evaluateMapper;

    @Autowired
    private EvaluateItemMapper evaluateItemMapper;
    /**
     * 查询人员评价
     *
     * @param id 人员评价主键
     * @return 人员评价
     */
    @Override
    public MenberEvaluation selectMenberEvaluationById(String id)
    {
        return menberEvaluationMapper.selectMenberEvaluationById(id);
    }

    /**
     * 查询人员评价列表
     *
     * @param menberEvaluation 人员评价
     * @return 人员评价
     */
    @Override
    public List<MenberEvaluation> selectMenberEvaluationList(MenberEvaluation menberEvaluation)
    {
        return menberEvaluationMapper.selectMenberEvaluationList(menberEvaluation);
    }

    /**
     * 查询人员评价列表
     * @param deptId
     * @param name
     * @param status
     * @return
     */
    @Override
    public List<Member> selectMembersByDeptId(Long deptId, String name, String status) {
        List<Member> members = memberMapper.selectMembersByDeptId(deptId, name);
        //设置评价状态
        for(Member member: members){
            MenberEvaluation menberEvaluation = new MenberEvaluation();
            menberEvaluation.setDeptId(deptId);
            menberEvaluation.setMemberId(member.getId());
            List<MenberEvaluation> menberEvaluations = menberEvaluationMapper.selectMenberEvaluationList(menberEvaluation);
            boolean st = true;
            for(MenberEvaluation me: menberEvaluations){
                if(me.getEvaluateItemId() == null || me.getEvaluateItemId() == 0){
                    st = false;
                }
            }
            if(st){
                member.setStatus(true);
            }else{
                member.setStatus(false);
            }
        }
        if("0".equals(status)){
            members = members.stream().filter(member -> !member.isStatus()).collect(Collectors.toList());
        }
        if("1".equals(status)){
            members = members.stream().filter(member -> member.isStatus()).collect(Collectors.toList());
        }
        return members;
    }

    @Override
    public List<Evaluate> selectEvaluateListByMemberId(Long memberId, Long deptId) {
        List<Evaluate> evaluates = evaluateMapper.selectEvaluateListByMemberId(memberId, deptId);
        //获取评价项
        for(Evaluate evaluate: evaluates){
            List<EvaluateItem> evaluateItems = evaluateItemMapper.selectEvaluateItemByEvaluateId(evaluate.getId());
            evaluate.setEvaluateItems(evaluateItems);
            //获取评价项ID和分数
            MenberEvaluation menberEvaluation = menberEvaluationMapper.selectEvaluate(memberId,
                    evaluate.getId(), deptId);
            if(menberEvaluation != null){
                evaluate.setEvaluateItemId(menberEvaluation.getEvaluateItemId());
                evaluate.setRemark(menberEvaluation.getRemark());
            }

        }
        return evaluates;
    }

    @Override
    public MenberEvaluation selectEvaluate(Long memberId, Long evaluateId, Long deptId) {
        return menberEvaluationMapper.selectEvaluate(memberId, evaluateId, deptId);
    }

    /**
     * 新增人员评价
     *
     * @param menberEvaluation 人员评价
     * @return 结果
     */
    @Override
    public int insertMenberEvaluation(MenberEvaluation menberEvaluation)
    {
        menberEvaluation.setCreateBy(SecurityUtils.getUsername());
        menberEvaluation.setCreateTime(DateUtils.getNowDate());
        return menberEvaluationMapper.insertMenberEvaluation(menberEvaluation);
    }

    /**
     * 修改人员评价
     *
     * @param menberEvaluation 人员评价
     * @return 结果
     */
    @Override
    public int updateMenberEvaluation(MenberEvaluation menberEvaluation)
    {
        menberEvaluation.setUpdateBy(SecurityUtils.getUsername());
        menberEvaluation.setUpdateTime(DateUtils.getNowDate());
        return menberEvaluationMapper.updateMenberEvaluation(menberEvaluation);
    }

    /**
     * 批量删除人员评价
     *
     * @param ids 需要删除的人员评价主键
     * @return 结果
     */
    @Override
    public int deleteMenberEvaluationByIds(String[] ids)
    {
        return menberEvaluationMapper.deleteMenberEvaluationByIds(ids);
    }

    /**
     * 删除人员评价信息
     *
     * @param id 人员评价主键
     * @return 结果
     */
    @Override
    public int deleteMenberEvaluationById(String id)
    {
        return menberEvaluationMapper.deleteMenberEvaluationById(id);
    }

    @Override
    public int deleteMenberEvaluationByMemberId(Long memberId, Long evaluateId) {
        return menberEvaluationMapper.deleteMenberEvaluationByMemberId(memberId, evaluateId);
    }
}
